<meta http-equiv="refresh" content="0; URL=https://mobile.twitter.com/i/nojs_router?path=/i/moments/850348029961846785"> scilabによるプロット:ベクトル場とKdV方程式

キーボードショートカット

キーボードのショートカットは共通のアクションとサイト内のナビゲーションに使用できます。

コンテンツをスキップ

scilabによるプロット:ベクトル場とKdV方程式

無料のmatlabクローンのscilabで、複素函数のベクトル場を描いたり、KdV方程式を数値的に解いて2ソリトン解をプロットしてみた。
編集
編集

複素函数 f(z) を実数値函数u, vでf(z) =u-ivと表示しておいて、ベクトル場(u,v)を複素平面にプロット。ベクトルの長さは色で表示。流れは面積保存で正則な点では渦なし。添付の画像は f(z)=z

1件の返信 2件のリツイート 2 いいね
返信先: さん

続き。電卓代わりにいつも使っているのがscilabです。添付の図はscilabのchamp1函数によるプロット。添付の画像は f(z)=z^2 です。

1件の返信 3件のリツイート 3 いいね
返信先: さん

続き。champ1はベクトルの長さを色で表示、長さの通りにベクトルを表示させたい場合はchampを使う。添付の画像は f(z)=z^3 です。体積(面積)保存で渦なしの流れ。

1件の返信 2件のリツイート 2 いいね
返信先: さん

続き。xとyを-1から1まで0.1刻みで動かす。z=x+iyとおいて、f(z)の(実部)と-(虚部)を成分とするベクトルをプロット。ただしベクトルの長さは色で区別。f(z)=1/z です。湧き出しまたは正電荷に見える。

1件の返信 2件のリツイート 2 いいね
返信先: さん

続き。これは f(z)= -1/z です。一つ前の奴の-1倍。これは吸い込み口または負電荷粒子に見える。極でる原点以外では体積保存で渦無しの流れ。原点の極に流体または電気力線が吸い込まれている。

1件の返信 2件のリツイート 2 いいね
返信先: さん

続き。ベクトルの長さを色で表示しているところがちょっと分かり難い。極(特異点)以外では体積保存で渦無しの流れ。f(z)=1/z^2 です。これは正電荷粒子と負電荷粒子がくっついている様子になる。

1件の返信 2件のリツイート 3 いいね
返信先: さん

続き。f(z)=1/(z-0.2) - 1/(z+0.2) は正電荷粒子がz=0.2に負電荷粒子がz=-0.2にある様子。1/z^2の様子に近い。

1件の返信 1件のリツイート 1 いいね
返信先: さん

続き。回転する渦を見たければ f(z)=i/z の様子をプロットしてみればよい。ベクトルの長さを色で表示しているのでわかりにくいが、原点では無限大の速さで回転している。これも原点以外では体積(面積)保存で渦無しの流れになっている。

1件の返信 1件のリツイート 1 いいね
返信先: さん

続き。f(z)=1/z^3 はこんな感じ。

1件の返信 1件のリツイート 1 いいね
返信先: さん

続き。+2の電荷を持つ粒子が一つと-1の電荷を持つ粒子が二つ近くにある様子。これは f(z) = 2/(z-.4)-1/(z+.1+.6i)-1/(z+.3-.4i) です。

1件の返信 1件のリツイート 1 いいね
返信先: さん

続き。複素函数 f(z) を実数値函数u, vでf(z) =u-ivと表示し、ベクトル場(u,v)を複素平面にプロットした。描かれる流れの図が体積(面積)保存かつ渦無しになることとf(z)が正則函数になることは数学的に同値。正則函数は体積保存で渦無しの流れと同じ。

1件の返信 2 いいね
返信先: さん

続き。以上では簡単な複素函数の流れのみをプロットしてみた。もっと複雑な有理型函数であっても、零点と極の情報さえ得られれば、その近所の流れを全体で適当に繋げれば全体の流れの図が得られる。ただし、体積保存と渦無しという性質に注意する。

1件の返信 3 いいね
返信先: さん

続き。よくある質問【f(z)=u-ivとしていますが、どうしてすなおにf(z) =u+ivとしないのですか?】への回答。虚部を-1倍しているのはコーシー・リーマンの方程式と体積(面積)保存で渦無しという条件が同値になるようにするためです。実際に流れをプロットすればわかる。

2件の返信 2 いいね
返信先: さん

続き。scilabの使い方。(1)scilabを使えるようにする。無料。ググれ。(2)scilabにclear; x=[-1:.1:1]; y=[-1:.1:1]; [xr xc]=size(x); [yr yc]=size(y);と入力。xとyは-1から1まで.1刻み。

1件の返信 3 いいね
返信先: さん

続きfor i=1:xc, for j=1:yc, z=complex(x(i),y(j)); if z==0 then v=0; else v=1/z; end;, vx(i,j)=real(v);, vy(i,j)=-imag(v); end;, end;と入力

1件の返信 1 いいね
返信先: さん

続きclf(); champ1(x,y,vx,vy)でベクトルの長さが色で表示されたベクトル場が表示される。色を使わない場合にはchampを使う。たったこれだけです。

1件の返信 1 いいね
返信先: さん

続き。scilabに限らず、多くの人が使っているソフトの使い方はググればわかる。

1件の返信 1 いいね
返信先: さん

以上のscilabで複素函数のベクトル場をプロットする話のまとめ読みはでできます。添付の画像は f(z)=z です。

1件の返信 4件のリツイート 6 いいね
返信先: さん

scilabでの等高線の描き方たとえば先のツイートの入力の続きでcontour2d(x,y,vy,21);とかすればいいのか。最後の21は等高線の本数。

1件のリツイート 6 いいね

KdV方程式の数値計算をscilabで 以下のコードは本質的に より N = 256; x = linspace(-10,10,N); delta_x = x(2) - (cont)

2件の返信 5 いいね
返信先: さん

scilabの話 の続き。KdV方程式の数値計算をscilabでやってみる→ 結果は添付画像の通り。所要時間数分間。

1件の返信 1件のリツイート 7 いいね
返信先: さん

scilab話続き。方法はより。たったの十数行でKdV方程式を数値的に解ける!もとのコードはmatlabだがほんの少し書き直すだけでscilabでもそのまま使える。

5 いいね

からKdV方程式の数値計算について連ツイしました。scilabを使えば無料でコードはた..

2件の返信 14 いいね
返信先: さん

投稿し直し。画像はKdV方程式の2ソリトン解の数値計算の結果。実際の初期値は2ソリトン解の厳密な初期値ではない。近似。scilabを使った。KdV方程式のWikipedia

1件の返信 1件のリツイート 2 いいね
返信先: さん

添付のグラフを作るためには、(1) scilabを自分のパソコンにインストール(2) scilabを起動(3) の後者のコードをコピー&ペーストこれだけ。

1件の返信 5 いいね
返信先: さん

数値計算で使ったコードはほぼのmatlab用のコードのコピー。虚数単位のiを%iに書き変える程度の変更でそのままscilabで使える。

2件の返信 3 いいね
返信先: さん

再掲 KdVの数値計算たったの十数行のコードはにあるmatlab用コードのコピー。ほんの少しの変更でそのままscilabで使える。

1件の返信 3 いいね
返信先: さん

再掲 KdVの数値計算 はほぼ のmatlabコードのコピー。虚数単位のiを%iに書き変える程度で無料のscilabで使える。

1件の返信 1件のリツイート 4 いいね
返信先: さん

私が高級電卓代わりに使っている無料の数値計算ソフトの scilab については→

1件の返信 4件のリツイート 13 いいね
返信先: さん
1件のリツイート 4 いいね

⚡️ "scilabによるプロット:ベクトル場とKdV方程式"

1件のリツイート 3 いいね